翻訳と辞書
Words near each other
・ Double-aspect theory
・ Double-balloon enteroscopy
・ Double-banded courser
・ Double-banded greytail
・ Double-banded plover
・ Double-banded pygmy tyrant
・ Double-banded sandgrouse
・ Double-barred finch
・ Double-barreled cannon
・ Double-barreled question
・ Double-barreled shotgun
・ Double-barrelled name
・ Double-Blind FROG
・ Double-Booked
・ Double-breasted
Double-chance function
・ Double-checked locking
・ Double-clad fiber
・ Double-click
・ Double-collared
・ Double-collared seedeater
・ Double-contrast barium enema
・ Double-crested cormorant
・ Double-Cross (2014 film)
・ Double-Cross System
・ Double-dead meat
・ Double-deck aircraft
・ Double-deck elevator
・ Double-decker bus
・ Double-decker tram


Dictionary Lists
翻訳と辞書 辞書検索 [ 開発暫定版 ]
スポンサード リンク

Double-chance function : ウィキペディア英語版
Double-chance function
In software engineering, a double-chance function is a software design pattern with a strong application in cross-platform and scalable development.
Consider a graphics API with functions to DrawPoint, DrawLine, and DrawSquare. It is easy to see that DrawLine can be implemented solely in terms of DrawPoint, and DrawSquare can in turn be implemented through four calls to DrawLine. If you were porting this API to a new architecture you would have a choice: implement three different functions natively (taking more time to implement, but likely resulting in faster code), or write DrawPoint natively, and implement the others as described above using common, cross-platform, code. An important example of this approach is the X11 graphics system, which can be ported to new graphics hardware by providing a very small number of device-dependent primitives, leaving higher level functions to a hardware-independent layer.〔Susan Angebranndt, Raymond Drewry, Philip Karlton, Todd Newman, "Definition of the Porting Layer for the X v11 Sample Server", MIT, 1988.〕〔Susan Angebranndt, Raymond Drewry, Philip Karlton, Todd Newman, "Strategies for Porting the X v11 Sample Server", Mit 1988.〕
The double-chance function is an optimal method of creating such an implementation, whereby the first draft of the port can use the "fast to market, slow to run" version with a common DrawPoint function, while later versions can be modified as "slow to market, fast to run". Where the double-chance pattern scores high is that the base API includes the self-supporting implementation given here as part of the null driver, and all other implementations are extensions of this. Consequently the first port is, in fact, the first usable implementation.
One typical implementation in C++ could be:

class CBaseGfxAPI
};
class COriginalGfxAPI : public CBaseGfxAPI
};
class CNewGfxAPI : public CBaseGfxAPI ;

Note that the CBaseGfxAPI::DrawPoint function is never used, per se, as any graphics call goes through one of its derived classes. So a call to CNewGfxAPI::DrawSquare would have its first chance to render a square by the CNewGfxAPI class. If no native implementation exists, then the base class is called, at which point the virtualization takes over and means that CNewGfxAPI::DrawLine is called. This gives the CNewGfxAPI class a “second chance” to use native code, if any is available.
With this method it is, theoretically, possible to build an entire 3D engine (applying software rasterizing) using only one native function in the form of DrawPoint, with other functions being implemented as and when time permits. In practise this would be hopelessly slow, but it does demonstrate the possibilities for double-chance functions.
== References ==

*

抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)
ウィキペディアで「Double-chance function」の詳細全文を読む



スポンサード リンク
翻訳と辞書 : 翻訳のためのインターネットリソース

Copyright(C) kotoba.ne.jp 1997-2016. All Rights Reserved.